package com.zw.pdm.module.report.mapper;

import com.zw.pdm.entity.craft.CraMakeDetail;
import com.zw.pdm.entity.designtask.DsnProStruct;
import com.zw.pdm.entity.rep.Sheet;
import com.zw.pdm.module.report.model.Project;
import com.zw.pdm.module.report.model.SheetModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description:
 *
 * @Author: China.sgl
 * @Date: 2020/8/8 13:28
 */
public interface SheetMapper {

    /** 提报计划提交 列表查询 */
    List<Sheet> findEqIdWithReportList(Sheet sheet);

    /** 提报计划提交 列表查询 */
    List<Sheet> findInIdWithReportList(Sheet sheet);

    /** 提报计划审核 列表查询 */
    List<SheetModel> findWithReportCheck(SheetModel sheet);

    /** 提报计划确认 列表查询 */
    List<Sheet> findWithReportConfirm(Sheet sheet);

    /** 提报计划查询 列表查询 */
    List<Sheet> findWithReportQuery(Sheet sheet);

    /** 按项目号查询项目的最后一个计划单 */
    Sheet findFirstByBatchNo(String proCode);

    /** 按项目号查询项目的最后一个变更计划单 */
    Sheet findChangeFirstByBatchNo(String proCode);

    /** 按项目编号查询项目信息 */
    List<Project> findProjectByCode(String code);

    /** 按 ID 修改 status */
    int updateStatusById(@Param("id") Integer id, @Param("status") Integer status);

    /** 按 ID 修改 status */
    int updateStatusAndRejectReasonById(@Param("id") Integer id, @Param("reject") String rejectReason, @Param("status") Integer status);

    /** 插入输出表数据 */
    int insertResult(Integer id);

    /** 按ID查询 */
    Sheet getOne(Integer id);

    /** 根据项目号查询部分 */
    List<DsnProStruct> findPartByProjectCode(@Param("code") String code, @Param("type") String type);

    /** 根据部分ID查询图号 */
    List<CraMakeDetail> findDrawNoByProCodeAndPart(@Param("code") String proCode, @Param("partId") Integer partId);

    /** 根据部分ID查询图号 */
    List<CraMakeDetail> findDrawNoByProCodeAndPartAndId(@Param("code") String proCode, @Param("partId") Integer partId, @Param("id") Integer id);

    /** 查图号 */
    CraMakeDetail findDrawNoById(Integer id);

    /** 成本中心项目 */
    Integer findVCostCountByProCode(String proCode);

    /** 非生产项目 */
    Integer findNotProduceCountByProCode(String proCode);
}
